XCOPY, ROBOCOPY
Иногда что-то изучишь и не пользуешься. Оно забывается. Потом, спустя много лет, всплывает задача. Ты у себя в мозгу запускаешь поиск, а индекс-то устарел или поврежден. Так и тут. Возникла задача - скопировать по сети огромный архив, но не весь, а выборочно. По маске. Стал вспоминать. Последнее, с чем работал - COPY. А тут, оказывается, новые версии подъехали.
Какая разница между XCOPY и COPY
xcopy - внешняя программа, а copy - часть интерпретатора
copy может объединять файлы.
copy file1 + file2 file3
создает файл ( file3 ), который содержит содержимое file1 и file2 .copy может копировать больше, чем просто файлы.
Например,
copy con file
позволяет напрямую писать с клавиатуры (консоли) в файл .
Аналогично, вы можете распечатать файл, используя
copy file prn copy file \computer\printer
где последний предназначен для общих принтеров.
Вы можете даже комбинировать приведенное выше: Команда
copy con prn
позволяет писать непосредственно на принтер.
Я считаю, что основное отличие в том, что xcopy способно копировать иерархии папок, а copy предназначено для работы только с файлами. Это говорит о том, что я не думаю, что есть что-то, что можно было бы использовать (функциональность или производительность) от использования copy .
Обратите внимание, что даже xcopy устарело по сегодняшним стандартам. Robocopy - относительно новая утилита для копирования на современных платформах Windows.
НУ, поехали
c:\>xcopy /?
Копирует файлы и деревья каталогов.
XCOPY источник [назначение] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/J] [/EXCLUDE:файл1[+файл2][+файл3]...]
Разберем атрибуты
/A Копирует только файлы с установленным атрибутом архивации; сам атрибут при этом не изменяется.
/M Копирует только файлы с установленным атрибутом архивации; после копирования атрибут снимается.
/D:м-д-г Копирует файлы, измененные не ранее указанной даты. Если дата не указана, заменяются только конечные файлы с более ранней датой, чем у исходных файлов.
/EXCLUDE:файл1[+файл2][+файл3]... Список файлов, содержащих строки. Каждая строка должна располагаться в отдельной строке в файлах. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, при указании строки \obj\ или .obj будут исключены все файлы из каталога obj или все файлы с расширением OBJ соответственно.
/P Выводит запросы перед созданием каждого конечного файла.
/S Копирует только непустые каталоги с подкаталогами.
/E Копирует каталоги с подкаталогами, включая пустые. Эквивалент сочетания параметров /S /E. Совместим с параметром /T.
/V Проверяет размер каждого нового файла.
/W Выводит запрос на нажатие клавиши перед копированием.
/C Продолжает копирование вне зависимости от наличия ошибок.
/I Если назначение не существует и копируется несколько файлов, считается, что местом назначения является каталог.
/Q Запрещает вывод имен копируемых файлов.
/F Выводит полные имена исходных и конечных файлов во время копирования.
/L Выводит копируемые файлы.
/G Копирует зашифрованные файлы в конечную папку, не поддерживающую шифрование.
/H Копирует скрытые и системные файлы (среди прочих).
/R Разрешает замену файлов, предназначенных только для чтения.
/T Создает структуру каталогов (кроме пустых каталогов) без копирования файлов. Для создания пустых каталогов и подкаталогов используйте сочетание параметров /T /E.
/U Копирует только файлы, уже имеющиеся в конечной папке.
/K Копирует атрибуты. При использовании команды XСOPY обычно сбрасываются атрибуты «только для чтения».
/N Использует короткие имена при копировании.
/O Копирует сведения о владельце и данные ACL.
/X Копирует параметры аудита файлов (требуется параметр /O).
/Y Подавляет запрос на подтверждение перезаписи существующего конечного файла.
/-Y Обязательный запрос на подтверждение перезаписи существующего конечного файла.
/Z Копирует сетевые файлы с возобновлением.
/B Копирует символьную ссылку вместо ее целевого объекта.
/J Копирует с использованием ввода-вывода без буферизации. Рекомендуется для очень больших файлов.
Примеры:
1. Скопировать все файлы и подкаталоги (включая пустые) с диска A на диск B
xcopy a: b: /s /e
2. Скопировать все файлы (включая системные и скрытые файлы) и подкаталоги (включая пустые) с диска T на диск G,
xcopy t: g: /s /e /h
3. Обновить файлы в каталоге \folder-2 файлами из каталога \folder-1, измененными после 7 июля 2020 года
xcopy \folder-1 \folder-2 /d:07-06-2020
4. Обновить файлы в каталоге \folder-2 файлами из каталога \folder-1, независимо от их даты
xcopy \folder-1 \folder-2 /u
5. Вывести список в файл xcopy.out, которые были бы скопированы в каталог \folder-2 из каталога \folder-1, измененные после 7 июля 2020 года
xcopy \folder-1 \folder-2 /d:07-06-2020 /l > xcopy.out
8. Cкопировать с диска T на диск G только файлы с атрибутом «Архивный»
xcopy t: g: /a
9. Скопировать папку \folder-1 в папку \folder-2, сохранив при этом ее разрешения
xcopy \folder-1 \folder-2 /O /X /E /H /K
10. Поддержка UNC путей. Скопировать сетевую папку \\server\share\folder-1 в папку \folder-2, сохранив при этом ее разрешения
xcopy \\server\share\folder-1 \folder-2 /O /X /E /H /K
Ссылки и документация по xcopy для разбора: